Searching is a very fundamental operation in computing, where a method is used to find an attribute within a large collection of attributes. For example, a number could be searched within a collection of numbers or a word can be searched within a collection of words in a database.
Searching methods, in general, needs to be fast as applications searching for an attribute are gated by the answer obtained back through searching. For example, if search is successful, the logic follows a course of actions compared to when search is unsuccessful.
Popular searching method includes Binary search. However, Binary search requires pre-processing of the data, typically sorting. Methods such as Binary search are very conducive when operated on the data that are complete and stable. They achieve Log(N) speed when data (of size N) is ordered. However, many data-intensive applications are evolving and it is very difficult to draw a line and take a snapshot of data to operate on for searching purposes.
Some of the applications that are data-intensive belong to fields such as banking, airline and hotel reservations. Banking transactions continuously happen and searching for particular information happen in parallel. For example, in applications such as credit card companies, and universities, new records are added all the time. It is cumbersome to sort and re-sort to be operated on by search methods that depend on sorted data.
Most industries sort the data in a pre-determined time slot (example—night time) by taking a snapshot, so that interruptions are not there while transacting. Unfortunately, the sorted list will not be up-to-date.
On the contrary, to keep the list sorted all the time is difficult, as well, since insertion of a new item into a sorted list takes time. When applications have millions of transactions, it is very difficult to devote time to keep the information sorted just for optimal searching purposes. There is a need for a different method for searching in order to minimize time, power and computer memory.